!
! 	routine qui cree la matrice A
!
SUBROUTINE createA(eps,alpha,beta,c,h,A)!
! 	Arguments
!   	A : OUT : le vecteur qui representera la matrice A
!   	epsilon,alpha,beta,c,h : IN : les elements de la matrice A
!
implicit none
DOUBLE PRECISION eps,alpha,beta,c,h
DOUBLE PRECISION, DIMENSION(5) :: A
!
  A(1) = -eps/h**2 + alpha/(2*h)
  A(2) = beta/(2*h) - eps/h**2
  A(3) = 4*eps/h**2 + c
  A(4) = -eps/h**2 - beta/(2*h)
  A(5) = -alpha/(2*h) - eps/h**2
!
WRITE(*,*) 'Matrice A créée !'
!
END SUBROUTINE
!
! 	routine qui cree le second membre
!
SUBROUTINE createG(n,eps,alpha,beta,c,h,g)!
! 	Arguments
!   	g : OUT : le vecteur qui representera le second membre g
!   	epsilon,alpha,beta,c : IN : les elements dans g
!           n : IN : la dimension
!
 implicit none
 INTEGER n,k,I,J
 DOUBLE PRECISION eps,alpha,beta,c,h,xi,yj
 DOUBLE PRECISION, DIMENSION(n*n) :: g
!
! Initialisation de l’indice de g
!
k = 1
DO I = 1, n
     ! Discretisation du domaine
     ! On force la division a etre reelle
     xi = 1.0*I*h 
     DO J = 1, n
		! On force la division a etre reelle egalement
		yj = 1.0*J*h
		! Creation de g
		! ATTENTION, c’est un vecteur colonne
		g(k) = -2.0*eps*(yj*(yj-1) + xi*(xi-1)) + alpha*yj*(yj-1)*(2*xi-1) + beta*xi*(xi-1)*(2*yj-1) + c*xi*yj*(xi-1)*(yj-1)
		! Incrementation de l’indice de g
		k = k+1
     ENDDO
ENDDO
!
WRITE(*,*) 'Second membre créé !'
!
END SUBROUTINE
!
!!!!!!!!!!!!!!!!!!!!! TEMPOREL !!!!!!!!!!!!!!!!!!!!!
!
! 	routine qui cree la matrice A temporelle
!
SUBROUTINE createMatTemporelle(nu,a,b,h,Mat)!
! 	Arguments
!   	A : OUT : le vecteur qui representera la matrice A
!   	epsilon,alpha,beta,c,h : IN : les elements de la matrice A
!
implicit none
DOUBLE PRECISION nu,a,b,h
DOUBLE PRECISION, DIMENSION(5) :: Mat
!
  Mat(1) = -nu/h**2 + a/(2*h)
  Mat(2) = b/(2*h) - nu/h**2
  Mat(3) = 4*nu/h**2
  Mat(4) = -nu/h**2 - b/(2*h)
  Mat(5) = -a/(2*h) - nu/h**2
!
WRITE(*,*) 'Matrice temporelle A créée !'
!
END SUBROUTINE
